package com.dexing.t20221218;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 题目，直角三角形的个数；
 * 输入：
 * 第一行n表示下面以n行数据，
 * 接下来n行的数据以空格分隔的正整数数组，其中第一个数字m表示这一行中后面有多少个数据，
 * 输出，每行数据中组成直角三角形的个数，
 * 输入
 * 1
 * 7 3 4 5 6 5 12 13
 * 输出
 * 2 （其中（3 4 5），（5 12 13）一共两组可以组成直角三角形）
 *
 * 输入
 * 1
 * 7 3 4 5 6 6 12 13
 * 输出
 * 1 （其中（3 4 5）只能组成一组直角三角形，即每个数字只能使用一次）
 */
public class Main03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = Integer.parseInt(scanner.nextLine());
        ArrayList<List<String>> lists = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String line = scanner.nextLine();
            List<String> list = Arrays.asList(line.split(" ")).stream().collect(Collectors.toList());
            list.remove(0);
            lists.add(new ArrayList<>(list));
        }
        for (int i = 0; i < lists.size(); i++) {
            List<String> strings = lists.get(i);
            checkSanJiao(strings);
        }
    }

    private static void checkSanJiao(List<String> strings) {
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < strings.size(); i++) {
            String s = strings.get(i);
            Integer integer = map.getOrDefault(s, 0)+1;
            map.put(s,integer);
        }
        int count = 0 ;
        for (int i = 0; i < strings.size(); i++) {
            String s1 = strings.get(i);
            Long a1 = Long.valueOf(s1);
            for (int j = i +1; j < strings.size(); j++) {
                String s2 = strings.get(j);
                Long a2 = Long.valueOf(s2);
                double sqrt = Math.sqrt(a1 * a1 + a2 * a2);
                long lsq = (long) sqrt;
                String s = String.valueOf((int) sqrt);
                if (sqrt - lsq == 0 && map.containsKey(s) && map.containsKey(s1) && map.containsKey(s2)) {
                    count++;
                    int i1 = map.get(s1) - 1;
                    if (i1 <= 0) {
                        map.remove(s1);
                    } else {
                        map.put(s1,i1);
                    }
                    int i2 = map.get(s2) - 1;
                    if (i2 <= 0) {
                        map.remove(s2);
                    } else {
                        map.put(s2,i2);
                    }
                    int i3 = map.get(s) - 1;
                    if (i3 <= 0) {
                        map.remove(s);
                    } else {
                        map.put(s,i3);
                    }
                }
            }
        }
        System.out.println(count);
    }
}
